package com.ruoyi.pack.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.ruoyi.pack.domain.PackProject;

/**
 * 项目Mapper接口
 * 
 * @author ruoyi
 */
@Mapper
public interface PackProjectMapper 
{
    /**
     * 查询项目
     * 
     * @param projectId 项目主键
     * @return 项目
     */
    public PackProject selectPackProjectByProjectId(Long projectId);

    /**
     * 查询项目列表
     * 
     * @param packProject 项目
     * @return 项目集合
     */
    public List<PackProject> selectPackProjectList(PackProject packProject);

    /**
     * 查询项目列表（用于导出，包含关联名称信息）
     * 
     * @param packProject 项目
     * @return 项目集合
     */
    public List<PackProject> selectPackProjectListForExport(PackProject packProject);

    /**
     * 新增项目
     * 
     * @param packProject 项目
     * @return 结果
     */
    public int insertPackProject(PackProject packProject);

    /**
     * 修改项目
     * 
     * @param packProject 项目
     * @return 结果
     */
    public int updatePackProject(PackProject packProject);

    /**
     * 删除项目
     * 
     * @param projectId 项目主键
     * @return 结果
     */
    public int deletePackProjectByProjectId(Long projectId);

    /**
     * 批量删除项目
     * 
     * @param projectIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePackProjectByProjectIds(Long[] projectIds);

    /**
     * 校验项目编码是否唯一
     * 
     * @param projectCode 项目编码
     * @return 结果
     */
    public PackProject checkProjectCodeUnique(String projectCode);

    /**
     * 查询公司下的所有项目
     * 
     * @param companyId 公司ID
     * @return 项目集合
     */
    public List<PackProject> selectProjectsByCompanyId(Long companyId);

    /**
     * 查询用户权限范围内的项目
     * 
     * @param packProject 项目查询条件
     * @return 项目集合
     */
    public List<PackProject> selectProjectsByDataScope(PackProject packProject);
} 